package com.greenlife.common.enums;

/**
 * 业务处理结果码
 * 
 * @author peitong.xue
 * @version 1.0
 * @since 1.0 2015年10月29日 下午3:02:39
 */
public enum BaseResultCodeEnum {
	/** 操作成功 **/
	ERR_CODE_200("200", "操作成功"),

	// 00开头，表示系统级错误
	/** 系统异常 **/
	ERR_CODE_00000("00000", "系统异常"),
	/** 系统执行异常 **/
	ERR_CODE_00001("00001", "系统执行异常"),
	/** 调用后台服务异常 **/
	ERR_CODE_00002("00002", "调用后台服务异常"),
	/** 登陆验证 **/
	ERR_CODE_00003("00003", "您尚未登录，请登录"),
	/** 登陆验证 **/
	ERR_CODE_00004("00004", "您已登录，无需重复操作"),
	/** 无权访问 **/
	ERR_CODE_00005("00005", "您无权访问"),
	/** 权限认证通过 **/
	ERR_CODE_00006("00006", "权限认证通过"),
	/** 密码多次输入错误 **/
	ERR_CODE_00007("00007", "密码多次错误，账号被暂时锁定，请在10分钟后再尝试登陆"),
	/** 文件服务器配置方案出错 **/
	ERR_CODE_00008("00008", "文件服务器配置方案出错"),

	// 10开头，表示数据库错误
	/** 数据库插入异常 **/
	ERR_CODE_10000("10000", "数据库插入异常"),
	/** 数据库更新异常 **/
	ERR_CODE_10001("10001", "数据库更新异常"),
	/** 数据库删除异常 **/
	ERR_CODE_10002("10002", "数据库删除异常"),
	/** 数据库查询异常 **/
	ERR_CODE_10003("10003", "数据库查询异常"),

	// 20开头，表示入参错误
	// 1.用户1~15
	/** ID参数不合法 **/
	ERR_CODE_20000("20000", "ID不合法"),
	/** 真实姓名不合法 **/
	ERR_CODE_20001("20001", "真实姓名不合法"),
	/** 账号参数不合法 **/
	ERR_CODE_20002("20002", "账号不合法"),
	/** 邮箱参数不合法 **/
	ERR_CODE_20003("20003", "邮箱不合法"),
	/** 联系方式参数不合法 **/
	ERR_CODE_20004("20004", "联系方式不合法"),
	/** 密码参数不合法 **/
	ERR_CODE_20005("20005", "密码不合法"),
	/** QQ参数不合法 **/
	ERR_CODE_20006("20006", "QQ不合法"),
	/** 账户ID或旧密码不合法 **/
	ERR_CODE_20007("20007", "账户ID或旧密码不合法"),
	/** 地址参数不合法 **/
	ERR_CODE_20013("20013", "QQ不合法"),

	// 2.店家16~30
	/** 店铺ID参数不合法 **/
	ERR_CODE_20016("20016", "店铺ID不合法"),
	/** 身份证参数不合法 **/
	ERR_CODE_20017("20017", "身份证参数不合法"),
	/** 店铺联系号码参数不合法 **/
	ERR_CODE_20018("20018", "店铺联系号码不合法"),
	/** 营业状态参数不合法 **/
	ERR_CODE_20019("20019", "营业状态参数不合法"),

	ERR_CODE_20030("20030", "营业状态参数不合法"),

	// 3/10.废品/商品分类31~40
	/** 类别ID参数不合法 **/
	ERR_CODE_20031("20031", "类别ID不合法"),
	/** 类别名参数不合法 **/
	ERR_CODE_20032("20032", "类别名不合法"),
	/** 类别_父类参数不合法 **/
	ERR_CODE_20033("20033", "类别_父类参数不合法"),

	// 4.废品交易单41~55
	/** 订单ID参数不合法 **/
	ERR_CODE_20041("20041", "订单ID参数不合法"),
	/** 用户ID参数不合法 **/
	ERR_CODE_20042("20042", "用户ID参数不合法"),
	/** 店铺ID参数不合法 **/
	ERR_CODE_20043("20043", "店铺ID参数不合法"),
	/** 状态参数不合法 **/
	ERR_CODE_20044("20044", "状态参数不合法"),
	/** 时间参数不合法 **/
	ERR_CODE_20045("20045", "时间参数不合法"),
	/** 评分等级参数不合法 **/
	ERR_CODE_20046("20046", "评分等级参数不合法"),

	// 5.用户收藏表56~60
	/** 用户ID参数不合法 **/
	ERR_CODE_20056("20056", "用户ID参数不合法"),
	/** 店铺ID参数不合法 **/
	ERR_CODE_20057("20057", "店铺ID参数不合法"),
	/** 时间参数不合法 **/
	ERR_CODE_20058("20058", "时间参数不合法"),

	// 6.7.店铺+用户积分记录表61~65
	/** 用户ID参数不合法 **/
	ERR_CODE_20061("20061", "用户ID参数不合法"),
	/** 积分参数不合法 **/
	ERR_CODE_20062("20062", "积分参数不合法"),
	/** 时间参数不合法 **/
	ERR_CODE_20063("20063", "时间参数不合法"),
	/** 店铺ID参数不合法 **/
	ERR_CODE_20064("20064", "店铺ID参数不合法"),

	// 8.积分等级+称号表66~75
	/** 等级参数不合法 **/
	ERR_CODE_20066("20066", "等级参数不合法"),
	/** 等级积分范围不合法 **/
	ERR_CODE_20067("20067", "等级积分范围参数不合法"),
	/** 等级称号不合法 **/
	ERR_CODE_20068("20068", "等级称号不合法"),
	/** 称号介绍参数不合法 **/
	ERR_CODE_20069("20069", "称号介绍参数不合法"),

	// 9.商城商品表76~90
	/** 提供商ID参数不合法 **/
	ERR_CODE_20076("20076", "提供商ID参数不合法"),
	/** 类别id不合法 **/
	ERR_CODE_20077("20077", "类别id参数不合法"),
	/** 商品名不合法 **/
	ERR_CODE_20078("20078", "商品名不合法"),
	/** 商品价值参数不合法 **/
	ERR_CODE_20079("20079", "商品价值参数不合法"),
	/** 兑换积分不合法 **/
	ERR_CODE_20080("20080", "兑换积分参数不合法"),
	/** 兑换数量上限不合法 **/
	ERR_CODE_20081("20081", "兑换数量上限参数不合法"),
	/** 当前库存量参数不合法 **/
	ERR_CODE_20082("20082", "当前库存量参数不合法"),

	// 11.积分商品兑换表91~100
	/** 用户id参数不合法 **/
	ERR_CODE_20091("20091", "用户id参数不合法"),
	/** 类别id不合法 **/
	ERR_CODE_20092("20092", "类别id参数不合法"),
	/** 商品id不合法 **/
	ERR_CODE_20093("20093", "商品id不合法"),
	/** 兑换时间参数不合法 **/
	ERR_CODE_20094("20094", "兑换时间参数不合法"),
	/** 商品数量不合法 **/
	ERR_CODE_20095("20095", "商品数量参数不合法"),

	// 12.商品提供商表101~110
	/** 名称参数不合法 **/
	ERR_CODE_20101("20101", "名称参数不合法"),
	/** 联系方式不合法 **/
	ERR_CODE_20102("20102", "联系方式参数不合法"),
	/** 联系地址不合法 **/
	ERR_CODE_20103("20103", "联系地址不合法"),
	/** 兑换时间参数不合法 **/
	ERR_CODE_20104("20104", "兑换时间参数不合法"),
	/** 商品数量不合法 **/
	ERR_CODE_20105("20105", "商品数量参数不合法"),
	// 其他，111...
	/** orderBy参数不合法 **/
	ERR_CODE_20111("20111", "orderBy参数不合法"),

	// 30开头，表示业务错误
	/** 密码错误 **/
	ERR_CODE_30000("30000", "密码错误"),
	/** 此号码已被人注册 **/
	ERR_CODE_30001("30001", "此号码已被人注册"),
	/** 没有这个用户 **/
	ERR_CODE_30002("30002", "此用户不存在"),
	/** 此账号已被人注册 **/
	ERR_CODE_30003("30003", "此账号已被人注册"),
	/** 此账号已被人锁定 **/
	ERR_CODE_30004("30004", "此账号已被人锁定"),
	/** 角色ID参数有误 **/
	ERR_CODE_30005("30005", "角色ID参数有误"),
	/** 文件上传失败 **/
	ERR_CODE_30006("30006", "文件上传失败"),
	/** 文件上传次数超出限制 **/
	ERR_CODE_30007("30007", "文件上传次数超出限制"),
	/** 登陆提示 **/
	ERR_CODE_30008("30008", "登陆失败"),
	/** 注册失败 **/
	ERR_CODE_30009("30009", "注册失败"),
	/** 文件类型不合法 **/
	ERR_CODE_30010("30010", "文件类型不合法"),

	// 40开头，表示返回结果错误
	/** 数据不存在 **/
	ERR_CODE_40000("40000", "数据不存在"),
	/** 返回结果为空 **/
	ERR_CODE_40001("40001", "返回结果为空"),

	// 50表示逻辑处理错误
	/** 数据转换异常 **/
	ERR_CODE_50000("50000", "数据转换异常"),

	// 90开头，表示其他错误**/
	/** 其他错误 **/
	ERR_CODE_90000("90000", "其他未知错误"),;

	/** 错误码 */
	private String code;

	/** 错误信息 */
	private String msg;

	BaseResultCodeEnum(String code, String msg) {
		this.code = code;
		this.msg = msg;
	}

	/**
	 * 根据code获取对应的枚举。
	 *
	 * @param code
	 *            枚举值
	 * @return code值对应的枚举
	 */
	public static BaseResultCodeEnum getEnumByCode(String code) {

		// value为空，返回null
		if (code == null || code == "") {
			return BaseResultCodeEnum.ERR_CODE_40001;
		}

		// 遍历
		for (BaseResultCodeEnum errEnum : values()) {
			if (code.equals(errEnum.getCode())) {
				return errEnum;
			}
		}
		// 找不到匹配的，返回null
		return BaseResultCodeEnum.ERR_CODE_90000;
	}

	public String getCode() {
		return code;
	}

	public String getMsg() {
		return msg;
	}

	public void setCode(String code) {
		this.code = code;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

}
